package com.yidu.ladder.system.service.impl;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yidu.ladder.system.dao.OrgDao;
import com.yidu.ladder.system.domain.OrgVo;
import com.yidu.ladder.system.service.OrgService;

/**
 * 组织结构业务层实体类
 * @since 2019年11月26日
 * @author {群主老王}
 */
@Service("orgService")
public class OrgServiceImpl implements OrgService {

	@Autowired
	private OrgDao orgDao;
	
	public OrgServiceImpl() {}
	
	public OrgDao getOrgDao() {
		return orgDao;
	}

	public void setOrgDao(OrgDao orgDao) {
		this.orgDao = orgDao;
	}

	@Override
	public int insert(OrgVo orgVo) {
		orgVo.setOrgId(UUID.randomUUID().toString().substring(0, 16));//生成UUID并截取前16位
		return orgDao.insert(orgVo);//返回添加成功条数
	}

	@Override
	public int update(OrgVo orgVo) {
		int num = 0;//定义修改成功数为0条
		for (String orgId:orgVo.getOrgId().split(",")) {//将前端拼接的n条ID参数从包装类取出再进行字符串分割，并遍历获取单个ID
			orgVo.setOrgId(orgId);////将单个ID重新赋值给包装类
			num = num + orgDao.update(orgVo);//调用DAO修改方法，注入单个ID参数，并刷新修改成功数
		}
		return num;//返回修改成功条数
	}

	@Override
	public int delete(String orgIds) {
		int num = 0;//定义删除成功数为0条
		for (String orgId:orgIds.split(",")) {//将前端拼接的n条ID参数进行字符串分割，并遍历获取单个ID
			num = num + orgDao.delete(orgId);//调用DAO删除方法，注入单个ID参数，并刷新删除成功数
		}
		return num;//返回删除成功条数
	}

	@Override
	public Map<String, Object> select(OrgVo orgVo) {
		Map<String, Object> map = new HashMap<String, Object>();//定义一个新的Map对象
		if (orgVo.getPage() >= 0 && orgVo.getLimit() > 0) {//判断包装类分页的值是否有需要分页
			orgVo.setPage((orgVo.getPage()-1)*orgVo.getLimit());//将包装类页码值修改为数据库查询数据起始行数
			map.put("code", 0);//设置数据编码，并将返回值放入Map对象中的编码
			map.put("count", orgDao.count(orgVo));//调用DAO计数方法，并将返回值放入范型Map中的计数
		}
		map.put("data", orgDao.select(orgVo));//调用DAO查询方法，注入包装类参数，并将返回值放入Map对象中的数据
		return map;//返回带有数据的Map对象
	}

}
